package ar.edu.caece.compiler.grammar.attributes.tree;

import java.util.ArrayList;
import java.util.List;

public class NodeFuncProc extends AttributeTreeNode {

	private NodeDeclaraciones declaraciones;
	private String nombreProc;
	private List<NodeFuncProc> asociados;
	private NodeBloque bloque;
	private NodeExpr devolucion;
	private Type tipo;
	
	public NodeFuncProc(NodeDeclaraciones declaraciones, String nombreProc,List<NodeFuncProc> asociados,
			NodeBloque bloque, NodeExpr devolucion) {
		super();
		this.declaraciones = declaraciones;
		this.nombreProc = nombreProc;
		this.asociados = asociados;
		this.bloque = bloque;
		this.devolucion = devolucion;
	}

	
	public NodeFuncProc() {
		asociados = new ArrayList<NodeFuncProc>();
		declaraciones = new NodeDeclaraciones();
	}


	public void addAsociado(NodeFuncProc asociado) {
		asociados.add(asociado);
	}
	public String getNombreProc() {
		return nombreProc;
	}
	public void setNombreProc(String nombreProc) {
		this.nombreProc = nombreProc;
	}

	public void setAsociados(List<NodeFuncProc> asociados) {
		this.asociados = asociados;
	}

	public List<NodeFuncProc> getAsociados() {
		return asociados;
	}

	public void setBloque(NodeBloque bloque) {
		this.bloque = bloque;
	}

	public NodeBloque getBloque() {
		return bloque;
	}

	public void setDevolucion(NodeExpr devolucion) {
		this.devolucion = devolucion;
	}

	public NodeExpr getDevolucion() {
		return devolucion;
	}

	public NodeDeclaraciones getDeclaraciones() {
		return declaraciones;
	}

	public void setDeclaraciones(NodeDeclaraciones declaraciones) {
		this.declaraciones = declaraciones;
	}


	public void setTipo(Type tipo) {
		this.tipo = tipo;
	}


	public Type getTipo() {
		return tipo;
	}


	@Override
	public String toString() {
		return "NodeFuncProc [asociados=" + asociados + ", bloque=" + bloque
				+ ", declaraciones=" + declaraciones + ", devolucion="
				+ devolucion + ", nombreProc=" + nombreProc + ", tipo=" + tipo
				+ "]";
	}
	

}
